Microcontrollers are often used to control stepper motors in a computer numeric control (CNC) system. CNC systems are often controlled using software. Control is performed in one dimension by selecting an axis. Movement along the axis is performed by accelerating, deaccelerating, or simply operating a stepper motor. Control of one dimensional motion may implemented by selecting the axis of motion and accelerating motion, running in constant motion, or decelerating motion. Two-dimensional motion requires such selections in two dimensions in addition to a calculation of coincident steps.